本文將會介紹一篇程式,他是透過爬蟲將股票資料抓下來,並且將股票資料會成圖形的程式。
def covertDate(Date):
str1 = str(Date)
yearstr = str1[:3]
realyear = str(int(yearstr) + 1911)
realdate = realyear + str1[4:6] + str1[7:9]
return realdate
def twodigit(n):
if(n<10):
restr = '0' + str(n)
else:
restr = str(n)
return restr
import requests
import json,csv
import pandas as pd
import os,time
import plotly
from plotly.graph_objs import Scatter,Layout
plotly.offline.init_notebook_mode(connected=True)
pd.options.mode.chained_assignment = None
filepath = 'Ticket.csv'
urlbase = 'http://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=2018'
urltail = '01&stockNo=2317&_=1559151834131'
if not os.path.isfile(filepath):
for i in range(1,13):
url_twse = urlbase + twodigit(i) + urltail
res = requests.get(url_twse)
jdata = json.loads(res.text)
outputfile = open(filepath,'a',newline = '', encoding='utf-8-sig')
outputwriter = csv.writer(outputfile)
if i==1:
outputwriter.writerow(jdata['fields'])
for dataline in (jdata['data']):
outputwriter.writerow(dataline)
time.sleep(0.5)
outputfile.close()
pdstock = pd.read_csv(filepath,encoding='utf-8-sig')
for i in range(len(pdstock['日期'])):
pdstock['日期'][i] = covertDate(pdstock['日期'][i])
pdstock['日期'] = pd.to_datetime(pdstock['日期'])
data = [
Scatter(x = pdstock['日期'],y=pdstock['收盤價'],name= '收盤價'),
Scatter(x = pdstock['日期'],y=pdstock['最低價'],name= '最低價'),
Scatter(x = pdstock['日期'],y=pdstock['最高價'],name= '最高價')
]
plotly.offline.iplot({
"data" : data,
"layout":Layout(title='2018年個股統計圖')
})
pdstock.plot(kind = 'line',figsize = (12,6),x='日期',y=['收盤價','最低價','最高價'])
這篇以上將之前各位介紹的基本上有做個融合,活用到爬蟲功能以及資料處理還有將資料變成表格再變成圖表,當然這個程式碼可能對於許多高手真的感覺很LOW,還請見諒!!!!,也先謝謝大數據分析書籍所提供學習程式,以及Youtube 連結 大數據股票抓取 https://www.youtube.com/channel/UCFdTiwvDjyc62DBWrlYDtlQ/feed 請各位也可以去看看他所介紹的程式,可以學習到不少,基本上以上的程式可以動作,他動作完將會呈現三軸的曲線,而且這三軸曲線還可以顯示出三個相關屬性,收盤價,最低價,最高價,各位可以嘗試看看。
這次會補充的地方為後面,我將資料抓取下來變成Excel格式 csv 檔案再將檔案裏面的一一東西,利用 pandas 功能把她一一抓取下來,行與列定義完成,就可以將所有資料取下,取下之後再將pandas 的圖表功能拿來使用,即可做出一個完整的圖表程式。
那在此謝謝各位觀看,以上為不專業AI的介紹,謝謝大家,下一篇就會邁向儲存資料的部分,那我們下篇見~~~~
預告:下篇 儲存資料 探討